namespace FanG
{
    using System;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Drawing2D;

    [TypeConverter(typeof(ExpandableObjectConverter))]
    public class Painting
    {
        private Color _Color1;
        private Color _Color2;
        private Color _Color3;
        private Chartlet.ColorStyles _ColorStyle;
        private int _ShiftStep;
        private bool _TextureEnable;
        private HatchStyle _TextureStyle;

        public Painting()
        {
            this._TextureStyle = HatchStyle.DarkUpwardDiagonal;
        }

        public Painting(int ShiftStep, Color Color1, Color Color2, Color Color3)
        {
            this._TextureStyle = HatchStyle.DarkUpwardDiagonal;
            this.ShiftStep = ShiftStep;
            this.Color1 = Color1;
            this.Color2 = Color2;
            this.Color3 = Color3;
        }

        public Painting(int ShiftStep, Color Color1, Color Color2, Color Color3, bool TextureEnable, HatchStyle TextureStyle)
        {
            this._TextureStyle = HatchStyle.DarkUpwardDiagonal;
            this.ShiftStep = ShiftStep;
            this.Color1 = Color1;
            this.Color2 = Color2;
            this.Color3 = Color3;
            this.TextureEnable = TextureEnable;
            this.TextureStyle = TextureStyle;
        }

        [Description("First Color\n颜色1"), Category("Chartlet")]
        public Color Color1
        {
            get
            {
                return this._Color1;
            }
            set
            {
                this._Color1 = value;
            }
        }

        [Description("Second Color\n颜色2"), Category("Chartlet")]
        public Color Color2
        {
            get
            {
                return this._Color2;
            }
            set
            {
                this._Color2 = value;
            }
        }

        [Category("Chartlet"), Description("Third Color\n颜色3")]
        public Color Color3
        {
            get
            {
                return this._Color3;
            }
            set
            {
                this._Color3 = value;
            }
        }

        [Description("Please Choose a Color Style\n颜色样式"), Category("Chartlet")]
        public Chartlet.ColorStyles ColorStyle
        {
            get
            {
                return this._ColorStyle;
            }
            set
            {
                this._ColorStyle = value;
            }
        }

        [Description("Color Index in Color Style\n颜色索引"), Category("Chartlet")]
        public int ShiftStep
        {
            get
            {
                return this._ShiftStep;
            }
            set
            {
                this._ShiftStep = value;
            }
        }

        [Category("Chartlet"), Description("Enable Texture Style\n启用纹理样式")]
        public bool TextureEnable
        {
            get
            {
                return this._TextureEnable;
            }
            set
            {
                this._TextureEnable = value;
            }
        }

        [Category("Chartlet"), Description("Paint Texture Style\n纹理样式")]
        public HatchStyle TextureStyle
        {
            get
            {
                return this._TextureStyle;
            }
            set
            {
                this._TextureStyle = value;
            }
        }
    }
}

